import { initGlobalAPI } from "./global-api/index";
import { initMixin } from "./init";
import { lifecycleMixin } from "./lifecycle";
import { renderMixin } from "./render";
import { stateMixin } from "./state";
function Vue(options) {
  this._init(options); // 入口方法，做初始化操作
}

// 写成一个个的插件进行对原型进行扩展
initGlobalAPI(Vue);
initMixin(Vue);
renderMixin(Vue); // _render
lifecycleMixin(Vue); // _update
stateMixin(Vue);

// import { compileToFunction } from "./compiler/index";
// import { createElm, patch } from "./vdom/patch";
// // diff核心
// let oldTemplate = `<div style="color: green; font-size: 16px;" a="1">
//   <li key="A">A</li>
//   <li key="B">B</li>
//   <li key="C">C</li>
//   <li key="D">D</li>
//   <li key="E">E</li>
// </div>`;

// /*
// <li>B</li>
//   <li>C</li>
//   <li>D</li>
// */
// let vm1 = new Vue({ data: { message: "hello world" } });
// const render1 = compileToFunction(oldTemplate);
// const oldVnode = render1.call(vm1);
// console.log(oldVnode);
// document.body.appendChild(createElm(oldVnode));

// // let newTemplate = `<p>{{message}}</p>`;
// let newTemplate = `<div style="color: red">
//   <li key="B">B</li>
//   <li key="E">E</li>
//   <li key="A">A</li>
//   <li key="C">C</li>
// </div>`;

// /*
// <li>B</li>
//   <li>C</li>
//   <li>D</li>
//   <li>E</li>
//   */
// let vm2 = new Vue({ data: { message: "zf" } });
// const render2 = compileToFunction(newTemplate);
// const newVnode = render2.call(vm2);

// // 根据新的虚拟节点更新老的节点，老的能尽量复用
// setTimeout(() => {
//   patch(oldVnode, newVnode);
// }, 2000);
export default Vue;
